package org.datastructure.secondday.sort;

import java.util.Arrays;

public class selectSort {

    public static void main(String[] args) {
        int[] arr = new int[]{101, 34, 119, 1};
        selectionSort(arr);
        Arrays.stream(arr).forEach(e -> System.out.println(e));
    }

    public static void selectionSort(int... arr) {


     /*   // TODO: 2021/7/5 由小到大排序 推导过程

        // TODO: 2021/7/5 step 1.1 设第一个是最小，依次和所有元素比较，选出最小元素和最小元素索引
        // TODO: 2021/7/5 设置一个中间值，min假设最小，再加一个最小元素索引
        int min = arr[0];
        int minIndex = 0;
        for (int j = 1; j < arr.length; j++) {
            if (min > arr[j]) {
                min = arr[j];
                minIndex = j;
            }
        }
        // TODO: 2021/7/5 1.2 将最小元素与arr[0]第一个元素交换位置
        arr[minIndex] = arr[0];
        arr[0] = min;
        Arrays.stream(arr).forEach(System.out::println);

        // TODO: 2021/7/5 step 2  设最小min=arr[1]
        min = arr[1];
        minIndex = 1;
        for (int j = 2; j < arr.length; j++) {
            if (min > arr[j]) {
                min = arr[j];
                minIndex = j;
            }
        }
        arr[minIndex] = arr[1];
        arr[1] = min;
        Arrays.stream(arr).forEach(System.out::println);*/
        int min = 0;
        int minIndex = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            min = arr[i];
            minIndex = i;
            for (int j = i + 1; j < arr.length; j++) {
                if (min > arr[j]) {
                    min = arr[j];
                    minIndex = j;
                }
            }
            if (min != arr[i]) {
                arr[minIndex] = arr[i];
                arr[i] = min;
            }
        }
    }
}
